Spring Boot提供的GaugeService
和CounterService
默认实现依赖于你使用的Java版本。如果使用Java8(或更高版本),Spring Boot将实现切换为一个高性能版本,该版本优化了写速度,底层使用原子内存buffers,而不是通过不可变但相对昂贵的Metric<?>
类型(跟基于仓库的实现相比,counters大概快5倍,gauges大概快2倍)。对于Java7,Dropwizard指标服务也是很有效的(使用了某些Java8并发库),但它不记录指标值的时间戳。如果需要关注指标采集的性能,建议你使用高性能的选项,并不要频繁读取指标信息,这样写入会本地缓存,只有在需要时读取。
注 如果使用Java8或Dropwizard,Spring Boot默认不会使用老的MetricRepository
和它的InMemoryMetricRepository
实现。